API(Recommend)
概要
このドキュメントでは、サーバーサイド統合のためのRecommend APIの使用方法について説明します。当社のAPIはRESTに似ており、すべてのレスポンスはJSON形式で返されます。また、クロスオリジンリソース共有にも対応しており、クライアントサイドのWebアプリケーションから安全に操作することができます。(ただし、秘密のAPIキーを公開されたWebサイトのクライアントサイドコードに露出させないでください)。
このガイドは以下の前提を想定しています:
-
Webまたはアプリケーション開発の経験があること。
-
REST APIについての理解があること。
-
JSONデータのデシリアライズおよび利用方法を理解していること。
-
ECサイトおよびアプリケーションに関する基本的な知識があること。
-
Recommendについてすでに知っていること。
利点
-
サーバーサイド統合では、Algonomyのp13n.js(パーソナライズ用メディアライブラリ)を各Webページに読み込む必要がありません。
-
APIは、スタンドアロンのコールセンターやPOSアプリケーションなど、Webベースでないアプリケーションでも使用できます。
-
レスポンスは、Webブラウザ内で実行されないプログラミング言語によるサーバーサイドコードで処理できます。これは、追加のリソースやバックエンドシステムが必要な場合に有効です。たとえば、製品の価格が頻繁に変更される場合、recsForPlacements APIのレスポンスで返された製品IDを使用して、製品管理システムまたはデータベースからリアルタイム価格を取得し、それをWebサイト上に表示することができます。
前提条件
-
サーバーサイドのレスポンス処理コードが可視化できないため、Algonomyの統合コンサルタントがデバッグ支援を行うのが難しくなります。
-
レスポンス形式の制御が少なくなります。recsForPlacements APIを使用して推奨を要求する場合、推奨された製品に関連するほとんどのデータ(カテゴリや属性など)が返されます。リクエスト内のパラメーターを使ってレスポンスのサイズを削減することはできますが、JSONレスポンスの正確なフォーマットやレイアウトは、クライアントサイド統合のようにカスタマイズすることはできません。
Recommend API
Recommendから推奨を取得するためのメインAPIはrecsForPlacements APIです。本ドキュメントの残りの部分では、このAPIの使用方法に焦点を当てます。
サイト上のページを統合する最初のステップは、リクエストしたいWebページのタイプ(またはアプリケーションの一部)に最も近いページタイプを決定することです。ページタイプはパーソナライズプロセスにおいて重要な役割を果たします。これは、Experience Optimizerがリアルタイムで顧客の購買意欲に影響を与える可能性が高い推奨戦略を判断する際のコンテキストを設定するためです。各ページタイプには必須パラメーターがあります。以下に示すのは、よくあるECサイトのページタイプに対して、サーバーサイド統合の例としてのrecsForPlacement API呼び出しです:
-
ウィッシュリストページ(近日公開)
recsForPlacementsリファレンスページで、入力パラメーターの包括的な一覧をご覧ください。
関連API
recsForPlacements APIと一緒に使用する、または代替として使用可能な他の関連APIもいくつか存在します。これには、製品カタログの更新や、Recommendにユーザー情報を照会するためのAPIなどが含まれます。これらのAPIのほとんどはこのドキュメントの範囲外ですが、他のAPIの一覧はPersonalization Cloud: APIsリファレンスページに掲載されています。
サーバーサイド実装用APIエンドポイント
本番環境
本番環境で推奨を取得するには以下のURLを使用してください:
https://recs.richrelevance.com/rrserver/api/rrPlatform/recsForPlacements
統合環境
QA、ステージング、または開発環境から推奨を取得するには、以下のURLを使用してください。この方法により、本番環境に影響を与えずに(マーチャンダイジングや戦略ルールなどの)変更をテストできます。
https://integration.richrelevance.com/rrserver/api/rrPlatform/recsForPlacements
IMPORTANT: 変更を加えた後は、Algonomyのコンサルタントと連携して、バニティURLをhttps://[customername].algorecs.comまたはhttps://recs.algorecs.comに更新してください。API呼び出しおよび計測メカニズムで使用されるその他のパラメーターはすべて同じままで構いません。
クライアントサイド実装用APIエンドポイント
Personalization CloudへWebブラウザから直接APIリクエストを送信することは推奨されていません。APIゲートウェイを使用したリバースプロキシ方式で、自社ドメインを通じてAPIリクエストをルーティングしてください。APIゲートウェイのリバースプロキシ方式の詳細については、API Reverse Proxy Domainを参照してください。
JavaScriptソリューションの詳細については、クライアントサイド統合ガイドを参照してください。もし、WebブラウザからPersonalization Cloudへ直接API呼び出しを実装している場合は、APIエンドポイントで新しい専用のデータキャプチャドメインであるhttps://recs.algorecs.comに更新することを推奨します。
本番環境
本番環境で推奨を取得するには以下のURLを使用してください:
https://recs.algorecs.com/rrserver/api/rrPlatform/recsForPlacements
統合環境
QA、ステージング、または開発環境から推奨を取得するには、以下のURLを使用してください。この方法により、本番環境に影響を与えずに(マーチャンダイジングや戦略ルールなどの)変更をテストできます。
https://integration.algorecs.com/rrserver/api/rrPlatform/recsForPlacements
IMPORTANT: 変更を加えた後は、Algonomyのコンサルタントと連携して、バニティURLを https://[customername].algorecs.com または https://recs.algorecs.com に更新してください。
API呼び出しおよび計測メカニズムで使用されるその他のパラメーターはすべて同じままで構いません。
認証
APIリクエストにAPIキーおよびAPIクライアントキーを含めて認証を行います。APIキーの管理はダッシュボードで行うことができます。APIキーには多くの権限があるため、必ず安全に保管してください。GitHub、検索可能なpastebinサイト、クライアントサイドコードなど、公開されている場所では秘密のAPIキーを共有しないでください。
JSON-P コールバック
recsForPlacements API 呼び出しのレスポンスを JSON 関数でラップするには、jsonp フラグをオンにして、jcp パラメーターに JavaScript のコールバック関数を指定します。例:?jsonp=true&jcp=myCallback
JSON-P はクロスドメインの問題を回避するためによく使用されます。たとえば、Webブラウザ内で動作するアプリケーションでAPIから返された推奨結果を利用する場合に有用です。ただし、Webベースのアプリケーションでは、recsForPlacements API の代わりにCore JSON Integrationの使用を推奨します。
クライアントエラー
不正なパラメーター値の指定などにより発生したほとんどのエラーは、HTTPステータス 200 OK として返され、レスポンスボディにエラー内容が記述されます。そのため、エラーの詳細を確認するにはレスポンスの解析が必要です。
{
"errormessage": "recsForPlacements API リクエストの処理中に内部エラーが発生しました",
"status": "error"
}
リクエスト処理中に内部エラー(稀)が発生した場合は、HTTP 500(5xx)レスポンスが返されることがあります。
パラメーター
以下は、ページタイプ別に recsForPlacements API リクエスト時に含める必要があるパラメーターの説明です。すべてのパラメーターの一覧については、recsForPlacementsリファレンスをご参照ください。
共通必須パラメーター
以下のパラメーターは、ページタイプに関係なく recsForPlacements API に必要です。
名前 |
説明 |
---|---|
apiKey |
サイトを識別する一意のキー。Algonomyの各クライアントには、他のクライアントとデータやトラフィックを分離するための専用APIキーが割り当てられます。 例:apiKey=4faeaf752ee40a0f |
apiClientKey |
API実装ごとに固有のキー。レポート、権限、マーチャンダイジングのために、特定のアプリケーションまたはクライアントを識別します。Algonomyから提供されます。 例:apiClientKey=b0126f995ac848159d |
sessionId |
顧客による1回の訪問を識別します。セッションは行動モデル(ショッピングセッション内のユーザー行動を把握する)やレポート指標で使用されます。 例:sessionId=93484 |
userId |
ユーザーID。各顧客(ユーザー)を一意に識別する文字列です。すべての顧客行動はこのキーを使って記録されます。大文字と小文字は区別され、他のアプリケーションでAlgonomyに送信されたユーザーIDと同じである必要があります。 例:userId=0982347 Note: ユーザーがログインしていない状態の場合、userIdパラメーターの値は空にしてください。Recommendは sessionId の値を仮のユーザーIDとして使用し、ユーザーがログインした際に匿名の行動データを実際のユーザーIDにリンクします。 |
placements |
プレースメント識別子のリスト。各識別子はページタイプとプレースメント名で構成され、「|」記号で区切られます。
例:placements=item_page.horizontal|item_page.vertical |
共通オプションパラメーター
以下のパラメーターは必須ではありませんが、実用的であり、ベストプラクティスとして使用することが推奨されます。
名前 |
説明 |
---|---|
rcs |
Algonomy クッキー文字列。このパラメーターは、API リクエストに関連するユーザーの暗号化された Algonomy クッキーを含みます。以前の API レスポンスで受け取ったとおりに正確に渡す必要があります。 クライアントは、提供された 'rcs' の値を変更せずに保持するようにしてください。このパラメーターは常に英数字で、大文字小文字を区別し、トークンには英字と数字の組み合わせが含まれます。 Note: 'rcs' パラメーターにより、マーチャントはユーザーの Algonomy ブラウザクッキーをプロキシ(またはパススルー)として渡すことができます。これは、サーバーサイドAPIを介してクッキーの読み書きを行い、Algonomy に提供する処理です。 |
chi |
カテゴリヒントID。このパラメーターは、明示的にカテゴリコンテキスト(カテゴリID)を設定したり、通常使用されるカテゴリを上書きするために使用します。 カテゴリがあいまいなページ(複数のカテゴリに属する商品の商品ページなど)で有効です。 カテゴリページ以外のページで明示的にカテゴリを設定しない場合、一部の戦略は productId からカテゴリ情報を推測します。代わりにカテゴリを明示的に指定することで、たとえばユーザーのパンくずリストの状態と一致させることが可能です。 カテゴリヒントは任意のページタイプに追加できます。「|」記号で区切ることで複数のカテゴリヒントを指定できます。これにより、各カテゴリに関連するマーチャンダイジングルールが適用されます。 例:chi=casual_tops|womens_activewear|activewear |
productId |
Search および Category ページタイプでは、最大15個の製品IDを pipe「|」区切りで指定できます。Search および Category ページで製品IDを渡すことは、戦略に対するより良いコンテキストを提供するためのベストプラクティスです。 例:productId=A040520003423|J040520076542|L0405200903939|J040520089878 |
ページタイプ別のパラメーター
上記の共通パラメーターに加え、以下の表では各ページタイプに必要な追加パラメーターについて説明しています。
ページタイプ |
ページタイプ固有のパラメーター |
API 呼び出し例 |
|
---|---|---|---|
|
|||
atcid |
カート追加ID。これは1つの製品IDまたは製品IDのリストです。複数の商品が追加された場合は、pipe「|」で区切ってください。 例:atcid=uv2345|xt1234
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=add_to_cart_page.atc_page_rr1_test&atcid=CON-NC4P-15454W2K%7CD1H79AV |
|
productId |
1つの製品IDまたは製品IDのリスト。購入完了ページの注文定義の一部です。「|」で区切ってください。 例:productId=uv2345|xt1234
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=cart_page.rr_warranties&productId=WHYM-F-CP23-N |
|
fpb |
ページで表示されているブランド。Brand Top Sellers などのブランド起点の戦略のためのシード設定に使用されます。 例:fpb=Microsoft
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=brand_page.rr1_test&fpb=Lenovo |
|
categoryId |
調査対象のカテゴリID。値は、マーチャントがAlgonomyに提供したカテゴリの外部IDと一致している必要があります。 例:categoryId=902312
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=category_page.rr1%7Ccategory_page.rr2&categoryId=C-JF |
|
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=error_page.rr1 |
||
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=generic_page.rr1_test |
||
productId |
1つまたは複数の製品ID。購入完了ページの注文定義の一部です。複数の場合は「|」で区切ってください。 例:productId=uv2345|xt1234
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=item_page.rr_recommended_qa&productId=E7W53A%230D1&chi=C-CC |
|
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=personal_page.rr1 |
||
|
productId |
1つまたは複数の製品ID。購入完了ページの注文定義の一部です。製品IDは「|」で区切ります。 例:productId=uv2345|xt1234 |
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=purchase_complete_page.rr1&productId=4XB0G88733&o=300242352342&q=1&pp=228.99&ppc=22899 |
o |
注文ID。注文定義の一部です。例:o=902312 |
||
pp |
商品価格のリスト。pp に渡される価格のインデックスは productId に対応しています。サイトの通貨乗数が適用されます。「|」で区切ります。 例:pp=29.99|32.97 |
||
ppc |
セント単位での商品価格のリスト。値のインデックスは productId に対応し、サイトの通貨乗数は適用されません。数値のみ(記号・区切りなし)で指定してください。 例:ppc=2999|3297 (これは $29.99 および $32.97 を表します) |
||
q |
数量のリスト。productId に対応する数量です。「|」で区切ってください。 例:q=2|1 |
||
|
GET /rrserver/api/rrPlatform/recsForPlacements?apiKey=d4ff21d55a1368fc&apiClientKey=42f5962fe3ed493e&userId=12345&sessionId=827ccb0eea8a706c4c34a16891f84e7b&placements=search_page.rr1%7Csearch_page.rr2&searchTerm=Lenovo |
レスポンス例
レスポンスは、現在のユーザー向けに推奨された商品オブジェクトのリストを含むJSONオブジェクトです。以下は、靴カテゴリから2つの商品が推奨された例です:
レスポンスヘッダー
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2018 22:16:47 GMT
Set-Cookie: m=1;Path=/
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: application/json;charset=utf-8
Vary: Accept-Encoding
Content-Length: 2390
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS, POST
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization, X-Requested-With
レスポンスボディ
{
"rcs": "eF5j4cotK8lM4TMzsNA11DVkKU32MEkyBAJjM11jYzMzXRNTozRdA0sgYZxiammQaGJmZmaaDABuTQ0O",
"placements": [
{
"htmlElementId": "home_page_0",
"placementType": "home_page",
"strategyMessage": "Shop Top Sellers",
"html": "",
"placement": "home_page.rr1",
"recommendedProducts": [
{
"clickURL": "https://integration.richrelevance.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&ct=http%3A%2F%2Flabs.richrelevance.com%2Fstorre%2Fcatalog%2Fproduct%2Fview%2Fsku%2F22127002&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
"regionPriceDescription": "",
"salePriceRangeCents": [
1,
1
],
"rating": 3.884,
"numReviews": 0,
"priceRangeCents": [
1,
1
],
"categoryIds": [
"Electronics",
"Electronics.Computers",
"Electronics.Computers.Tablet PCs"
],
"clickTrackingURL": "https://integration.richrelevance.com/rrserver/apiclick?a=showcaseparent&cak=776cdd80331919e7&vg=4b121136-3366-452f-092f-3d590a46665c&stid=126&pti=9&pa=11339&pos=0&p=22127002&channelId=776cdd80331919e7&s=827ccb0eea8a706c4c34a16891f84e7b&u=12345&mvtId=-1&mvtTs=1529712166361",
"salePriceCents": 1,
"regionalProductSku": "22127002",
"imageURL": "http://labs.richrelevance.com/storre/media/catalog/product/n/e/nextbook-7quot-tablet-with-8gb-memory-with-google-mobile-services-73fbdb1640b18e99695aa87c7da712f5.jpg",
"name": "\"Nextbook 7\\\" Tablet with 8GB Memory with Google Mobile Services\"",
"genre": "default",
"isRecommendable": true,
"priceCents": 6900,
"attributes": {
"MktplcInd": [
"W"
],
"Clearance": [
"N"
],
"97CentShipping": [
"N"
],
"Rollback": [
"N"
],
"Online": [
"Y"
],
"ListPrice": [
"79"
],
"AddToCart": [
"Y"
],
"IsReducedPrice": [
"N"
],
"IsSubmap": [
"N"
],
"S2S": [
"Y"
]
},
"id": "22127002",
"categories": [
{
"hasChildren": false,
"name": "Electronics",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics",
"isActive": false
},
{
"hasChildren": false,
"name": "Computers",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics.Computers",
"isActive": false
},
{
"hasChildren": false,
"name": "Tablet PCs",
"childCategories": [],
"ancestorCategories": [],
"id": "Electronics.Computers.Tablet PCs",
"isActive": false
}
],
"productURL": "http://labs.richrelevance.com/storre/catalog/product/view/sku/22127002",
"brand": "Nextbook"
}
]
}
],
"viewGuid": "4b121136-3366-452f-092f-3d590a46665c",
"status": "ok"
}
リソース
以下は、recsForPlacements API への正常な呼び出しによって返されるリソース(JSONオブジェクト)の詳細な説明です。
レスポンスオブジェクト
レスポンスオブジェクトには、recsForPlacements API 呼び出しで要求された各プレースメントに対応するプレースメントオブジェクトが含まれます。
フィールド |
説明 |
---|---|
viewGuid |
この推奨セットの一意の識別子。 |
rcs |
Algonomy クッキー。マーチャントがユーザーのブラウザとやり取りするために使用する(クッキープロキシ / パススルー)。 |
placements |
プレースメントオブジェクトのJSON配列。各プレースメントは、推奨商品リストを含みます。 |
status |
"ok" または "error" のいずれか。 |
errormessage |
status が "error" の場合に、エラーの説明が含まれます。 |
プレースメントオブジェクト
プレースメントオブジェクトは、そのプレースメントに適用された戦略によって決定された1つ以上の推奨商品を含みます。
フィールド |
説明 |
---|---|
htmlElementId |
?(UI要素ID) |
placementType |
プレースメントのページタイプ。 |
strategyMessage |
推奨された商品を決定した戦略に対するメッセージ。 |
html |
?(HTMLレスポンス、または空) |
placement |
プレースメントのID。 |
recommendedProducts |
そのプレースメントに対する推奨商品群のJSON配列。 |
商品オブジェクト
商品オブジェクトは、あるプレースメントに対して推奨された個々の商品を表します。
フィールド |
説明 |
---|---|
id |
商品のID。 |
name |
商品の名称。 |
imageURL |
商品の画像URL。 |
clickURL |
クリックURL。推奨商品クリックを追跡し、商品詳細ページへリダイレクトします。 |
productURL |
商品の紹介ページへのリンク。 |
clickTrackingURL |
商品クリックを追跡するが、商品詳細ページへはリダイレクトしないURL。productURLと併用可能。 |
rating |
商品の総合評価を示す小数値。デフォルトは -1.0(評価なし)。 |
numReviews |
商品のレビュー数(整数)。デフォルトは0。 |
priceRangeCents |
商品の最低価格と最高価格を表すセント単位の配列。 |
priceCents |
商品の価格(セント単位)。 |
salePriceCents |
商品の最低および最高セール価格を表すセント単位の配列。 |
regionalProductSku |
ユーザーの地域に対応する商品のSKU。[RegionおよびSKUフィードとの関係は?] |
regionalPriceDescription |
?(地域価格に関する説明) |
attributes |
商品属性オブジェクトのJSON配列。 |
brand |
商品のブランド。 |
genre |
商品のジャンル。 |
categoryIds |
商品が属するカテゴリIDの配列。 |
categories |
商品が属するカテゴリを表すカテゴリオブジェクトの配列。 |
isRecommendable |
商品が推奨可能かどうか(常に true)。 |
属性オブジェクト
商品オブジェクトには、1つ以上の属性オブジェクトを含めることができます。これらの属性は、製品カタログフィードおよび/またはカタログ更新APIを介してRecommendに渡されます。
フィールド |
説明 |
---|---|
属性名* |
属性の名称。 |
属性値* |
属性の値。 |
* これらは、製品カタログフィードおよび/またはカタログ更新APIで定義されます。
カテゴリオブジェクト
商品オブジェクトには、1つ以上のカテゴリオブジェクトを含めることができます。カテゴリは、製品カタログフィードおよび/またはカタログ更新APIで定義されます。
フィールド |
説明 |
---|---|
id |
カテゴリのID。 |
name |
カテゴリの名称。 |
childCategories |
子カテゴリの配列(親カテゴリの場合)。 |
ancestorCategories |
祖先カテゴリの配列(子カテゴリの場合)。[何世代まで?] |
isActive |
カテゴリがアクティブかどうか。 |